#ifndef CLOCK_H
#define CLOCK_H

#include "signalgenerator.h"
#include "iclockgen.h"
#include "configuredelement.h"
#include "microscheme.h"
#include "xmlhelper.h"

#include <QObject>

//Генератор импульсов
class ClockElement : public ConfiguredElement, public ISignalGenerator, public IClockGenerator
{
    Q_OBJECT
private:
    SignalContainer voidContainer;
    MicroScheme* scheme;

public:
    ClockElement();

    // Получить сигналы генератора
    SignalContainer& getSignalCollection();

    // Получить флаг редактируемости генератора
    bool getEditable();

    // Сгенерировать сигнал в момент времени time
    void generateSignal(uint time, uint tact);

    //Сохранить данные в файл схемы
    void saveData(QDomNode &additionals);

    //Загрузить данные из файла схемы
    void initData(const QDomNode &additionals);
};

#endif // CLOCK_H
